#include <drivers/gpio.h>
#include <drivers/irq.h>
#include <io.h>
#include <kernel/shell.h>
#include <stm32h7.h>


static void delay(int delay)
{
    for(volatile int i = 0; i<delay; i++)
        for(volatile int j=0;j<1000;j++);
}

void test_exit_handler(void *data)
{
    irq_clear_flag(IO_PB9);
    gpio_toggle_value(IO_PA15);
}


int main(void)
{
    gpio_request(IO_PA15);

    gpio_direction_output(IO_PA15, 1);

    gpio_request(IO_PB9);

    int irq = gpio_to_irq(IO_PB9, IRQF_LEVEL);
    gpio_set_pulldown(IO_PB9, true);
    irq_request(irq, test_exit_handler, NULL);
    irq_enable(irq);

    while(1) {
        // gpio_toggle_value(IO_PA15);
        // delay(10000);
        shell_loop();
    }

    return 0;
}
